use std::{f64::consts::E, sync::Arc};

use super::message::{SignalMessage, SignalMessageContent};

pub async fn on_message(msg: SignalMessage) -> anyhow::Result<Option<String>> {
    let peer_id = &msg.src;
    let message = &msg.data;
    let request_id = msg.request_id.clone();
    //
    if let Some(message) = message {
        match message {
            SignalMessageContent::WebRTC { err, data } => {
                if let Some(msg) = data {
                    super::webrtc::on_message(peer_id, msg).await
                } else {
                    Ok(None)
                }
            }
            SignalMessageContent::Ice { err, data } => {
                if let Some(msg) = data {
                    super::ice::on_message(peer_id, msg, request_id).await
                } else {
                    Ok(None)
                }
            }
            SignalMessageContent::Rrai { err, data } => {
                if let Some(msg) = data {
                    super::rrai::on_message(peer_id, msg).await
                } else {
                    Ok(None)
                }
            }
            _ => {
                tracing::debug!("没有处理的类型！");
                Ok(None)
            }
        }
    } else {
        Ok(None)
    }
}
